

#ifndef UC_GEBNDPLN_H
#define UC_GEBNDPLN_H

#include "zgeplanar.h"
#include "zgeplane.h"
#pragma pack (push, 8)

class UcGePlane;
class UcGeVector3d;
class UcGePoint3d;
class UcGePoint2d;
class UcGeLineSeg3d;

class
GE_DLLEXPIMPORT
UcGeBoundedPlane : public UcGePlanarEnt
{
public:
    UcGeBoundedPlane();
    UcGeBoundedPlane(const UcGeBoundedPlane& plane);
    UcGeBoundedPlane(const UcGePoint3d& origin, const UcGeVector3d& uVec,
                     const UcGeVector3d& vVec);
    UcGeBoundedPlane(const UcGePoint3d& p1, const UcGePoint3d& origin,
                     const UcGePoint3d& p2);

    ZSoft::Boolean    intersectWith (const UcGeLinearEnt3d& linEnt, UcGePoint3d& point,
                                     const UcGeTol& tol = UcGeContext::gTol) const;
    ZSoft::Boolean    intersectWith (const UcGePlane& plane, UcGeLineSeg3d& results,
                                     const UcGeTol& tol = UcGeContext::gTol) const;
    ZSoft::Boolean    intersectWith (const UcGeBoundedPlane& plane, UcGeLineSeg3d& result,
                                     const UcGeTol& tol = UcGeContext::gTol) const;

    UcGeBoundedPlane& set           (const UcGePoint3d& origin,
                                     const UcGeVector3d& uVec,
                                     const UcGeVector3d& vVec);
    UcGeBoundedPlane& set           (const UcGePoint3d& p1,
                                     const UcGePoint3d& origin,
                                     const UcGePoint3d& p2);

    UcGeBoundedPlane& operator =    (const UcGeBoundedPlane& bplane);
};

#pragma pack (pop)
#endif
